package 面试经典150题.二叉树;

import common.TreeNode;

import java.util.ArrayList;
import java.util.List;

/**
 * @author tmh
 * @date 2024/6/20 20:58
 * @description
 */
public class T98验证二叉搜索树 {
    List<Integer> list =new ArrayList<>();
    public boolean isValidBST(TreeNode root) {
        traversal(root);
        //遍历集合，如果前面的元素大于等于后面的元素的时候，那么就说明不符合二叉搜索数的规则，直接返回false
        for (int i = 1; i < list.size(); i++) {
            if(list.get(i-1)>=list.get(i)){
                return false;
            }
        }
        return true;
    }

    //中序遍历二叉搜索树得到的是一个有序集合，下面就是中序遍历的模板
    public void traversal(TreeNode root) {
        if (root == null) {
            return;
        }
        //往左遍历
        traversal(root.left);
        //把对应的值root.val加入进list里面
        list.add(root.val);
        //往右遍历
        traversal(root.right);
    }
}
